package com.gosilver.beans.factory;


import com.gosilver.beans.BeansException;

/**
 * 定义 BeanFactory 这样一个 Bean 工厂，提供 Bean 的获取方法 getBean(String name)
 * 之后这个 Bean 工厂接口由抽象类 AbstractBeanFactory 实现
 */
public interface BeanFactory {
    Object getBean(String name) throws BeansException;

    /**
     * 重载了一个含有入参信息 args 的 getBean 方法，这样就可以方便的传递入参给构造函数实例化
     *
     * @param name
     * @param args
     * @return
     * @throws BeansException
     */
    Object getBean(String name, Object... args) throws BeansException;

    <T> T getBean(String name, Class<T> requiredType) throws BeansException;

}
